package IO;

import java.io.*;
import java.util.Locale;
import java.util.Scanner;

public class IODemo8 {
    //复制文件
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入被拷贝的文件路径,绝对路径or相对路径");
        String rootDirPath = scanner.next();
        File sourceFile = new File(rootDirPath);
        if(!sourceFile.exists()){
            System.out.println("您输入的文件不存在,请确认路径是否正确");
            return;
        }
        if(!sourceFile.isFile()){
            System.out.println("该文件不是一个普通文件,请重新输入");
            return;
        }
        System.out.print("请输入要复制到的目标路径（绝对路径 OR 相对路径): ");
        String destPath = scanner.next();
        File destFile = new File(destPath);
        if(destFile.exists()){
           if(destFile.isDirectory()){
               System.out.println("目标路径已经存在,并且是一个目录,请确认路径是否正确");
            return;
           }
           if(destFile.isFile()){
               System.out.println("该路径文件已经存在,是否进行覆盖y/n");
               String ans = scanner.next();
               if(!ans.toLowerCase().equals("y")){
                   System.out.println("停止复制");
                   return;
               }
           }
        }
        try (InputStream is = new FileInputStream(sourceFile)){
            try (OutputStream os = new FileOutputStream(destFile)){
               byte[] array = new byte[1024];
               int len = 0;
                while (true){
                    //将读取到的字节都放入这个数组中
                    //len表示当前读取到几个字节
                    len = is.read(array);
                    //==-1说明读取完了
                    if(len == -1){
                        break;
                    }
                    //从0往后读取len个字节
                    os.write(array,0, len);
                }
                System.out.println("拷贝成功");
                os.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
